<?php
class AFacturaProveedor {

	public function __construct() {
	}

	public function condicionPago(EFacade & $facade) {
		
		
		//Afectar a la cuenta de ventas
		/**TODO:  Afectar a la cuenta ventas correspondiente
		 * 
		 */
		
		$ezpdo_=getManager();
		
		//lanzar la transicion
		
		//echo "lo que hay que pagar es: ",$odcFP->totalAPagar;
		$session=$facade->session;
		// -----------------------------
		// generar las solicitudes asociadas
		// -----------------------------
		//echo "va a generar solicitud de produccion en el ACotizacionProducicon";
		$docFP = & $facade->getDocumentRoot();
		//$docOC = & $docIM->asociadoA;
		$network=$docFP->workflowRef->networkRef;
		
		$query='FROM MConfiguracionCuenta as t WHERE t.documento.oid=?';
		$configuracion=$ezpdo_->find($query,$network->epGetObjectId());
		//echo '<br>configuracion contable',$configuracion[0];
		
		
		if($docFP->cuentaPorPagar!=0){
			
			$query1='FROM MCuentaContable as t WHERE t.oid=?';
			$cuentaHja=$ezpdo_->find($query1,$docFP->cuentaPorPagar);
			
		}
		
		
		$listaProductos=$docCP->listaProductos;
		
		//A la cuenta del proveedor (historico) asociarle la información
		
		$proveedor=&$docFP->proveedor;
		
		if($proveedor->cuenta==NULL){
			$cuentaProveedor=$session->create('MCuentaProveedor');
			$proveedor->cuenta=$cuentaProveedor;
		}
		$cuentaProveedor=&$proveedor->cuenta;
		$listaCuotas=&$cuentaProveedor->cuotasProveedor;
		$saldoProveedor=$proveedor->cuenta->getSaldo();
		
		$cuentaProveedor->commit();
		
		
		$listaFacturas=&$cuentaProveedor->facturasProveedor;
		$listaFacturas[]=$docFP;
		//echo "<br>",$docCP;
	
		/*
		 * veo los plazos y genero las cuentas y giros
		 */
		
		$totalPagado=0;
		
		/*
		 * afectar las cuetnas dependiendo de como se haya pagado
		 * Caluclar el monto total pagado en este momento
		 */
		
		$cuentas=$configuracion[0]->cuenta;
		$totalCompra=$docFP->totalAPagar;
		
		
		//************CUENTA VENTAS ACTUALIZACION********************************//
		foreach($cuentas as $c){
			
			if($c->posicion==3){
				//echo '<br>compras por',$totalCompra;
				$c->cuentaContable->aumenta($totalCompra,$docFP);
				$c->cuentaContable->commit();
			}
		}
		
		
		// Actualización de valores de caja de acuerdo al tipo de transacción
		// Creación de la transacción
		
		$formasPago=$docFP->formaPagoList;
		foreach($formasPago as $formaPago){
			$montoImpuesto=0;
			$montoPagado=stringToNumber($formaPago->montoPago);
			$totalPagado+=$montoPagado;
			//echo "lo pagado hasta ahorita es: ",$totalPagado;
			//echo "<br>la forma de pago es ",$formaPago->formaPago->cuentaCaja;
			// Asignar a las cuetnas de caja o banco el monto
			if($cuentaCaja=&$formaPago->formaPago->cuentaCaja!=NULL){
	//echo "<br>entra aqui",$cuentaCaja;
				$saldoCajaViejo=$cuentaCaja->saldo;
				
				$sql='FROM MTipoTransaccion as t where t.cuentaCaja.oid = ?';
				$transacciones=$ezpdo_->find($sql,$cuentaCaja->epGetObjectId());
		//		echo "<br>aqui";
				$tipoTransaccion=$transacciones[0];
				$montoAumento=0;
				if($porcentaje=$tipoTransaccion->porcentajeComision>0){
					$montoNuevo=$montoPagado*$porcentaje/100;
					$montoImpuesto-=$montoNuevo;
					
					//transaccion por comision
					
					$transaccion=$session->create('MTransaccion');
					$fechaTransaccion=time();
					$montoTransaccion=$montoNuevo;
					$transaccion->esCaja=TRUE;
					$transaccion->fechaTransaccion=$fechaTransaccion;
					$transaccion->montoTransaccion=$montoTransaccion;
					$transaccion->debe=$montoTransaccion;
					$descripcion="Comision  ".$porcentaje ." %";
					$transaccion->descripcion=$descripcion;
					$transaccion->tipoTransaccion=$tipoTransaccion;
					$transaccion->cuentaCaja=$cuentaCaja;
					$transaccion->commit();
					//echo "<br>la transaccion es: ",$transaccion;
					$facade->session->evictAll('MTransaccion');
					
					
				}
				if($porcentaje=$tipoTransaccion->montoComision >0){
					
					$montoImpuesto-=$porcentaje;
					
					//transaccion por comision
					
					$transaccion=$session->create('MTransaccion');
					$fechaTransaccion=time();
					$montoTransaccion=$porcentaje;
					$transaccion->esCaja=TRUE;
					$transaccion->fechaTransaccion=$fechaTransaccion;
					$transaccion->montoTransaccion=$montoTransaccion;
					$transaccion->debe=$montoTransaccion;
					$descripcion="Comision  ".$porcentaje ." BsF";
					$transaccion->descripcion=$descripcion;
					$transaccion->tipoTransaccion=$tipoTransaccion;
					$transaccion->cuentaCaja=$cuentaCaja;
					//echo "<br>la transaccion es: ",$transaccion;
					$facade->session->evictAll('MTransaccion');
					
				}
				if($porcentaje=$tipoTransaccion->porcentajeImpuesto >0){
					$montoNuevo=$montoPagado*$porcentaje/100;
					$montoImpuesto-=$montoNuevo;
					
					//transaccion por impuesto
					
					$transaccion=$session->create('MTransaccion');
					$fechaTransaccion=time();
					$montoTransaccion=$montoNuevo;
					$transaccion->esCaja=TRUE;
					$transaccion->fechaTransaccion=$fechaTransaccion;
					$transaccion->montoTransaccion=$montoTransaccion;
					$transaccion->debe=$montoTransaccion;
					$descripcion="Impuesto ".$porcentaje ." %";
					$transaccion->descripcion=$descripcion;
					$transaccion->tipoTransaccion=$tipoTransaccion;
					$transaccion->cuentaCaja=$cuentaCaja;
					$transaccion->commit();
					//echo "<br>la transaccion es: ",$transaccion;
					$facade->session->evictAll('MTransaccion');
				}
				if($porcentaje=$tipoTransaccion->montoImpuesto >0){
					
					$montoImpuesto-=$porcentaje;
					
					$transaccion=$session->create('MTransaccion');
					$fechaTransaccion=time();
					$montoTransaccion=$porcentaje;
					$transaccion->esCaja=TRUE;
					$transaccion->fechaTransaccion=$fechaTransaccion;
					$transaccion->montoTransaccion=$montoTransaccion;
					$transaccion->debe=$montoTransaccion;
					$descripcion="Impuesto ".$porcentaje ." BsF";
					$transaccion->descripcion=$descripcion;
					$transaccion->tipoTransaccion=$tipoTransaccion;
					$transaccion->cuentaCaja=$cuentaCaja;
					$transaccion->commit();
					//echo "<br>la transaccion es: ",$transaccion;
					$facade->session->evictAll('MTransaccion');
				}
				
				//Crear la transaccion del monto
				$transaccion=$session->create('MTransaccion');
				$fechaTransaccion=time();
				$montoTransaccion=$montoPagado;
				$transaccion->esCaja=TRUE;
				$transaccion->fechaTransaccion=$fechaTransaccion;
				$transaccion->montoTransaccion=$montoTransaccion;
				$transaccion->debe=$montoTransaccion;
				if(strlen($formaPago->detalle)>0){
					$detalle="";
				} else {
					$detalle=" con ".$formaPago->formaPago->nombre." ".$formaPago->detalle;
				}
				$descripcion="Pago Factura ".$docFP->numeroFactura .$detalle;
				$transaccion->descripcion=$descripcion;
				$transaccion->tipoTransaccion=$tipoTransaccion;
				$transaccion->cuentaCaja=$cuentaCaja;
				$transaccion->documento=$docFP;
				
				
				
				$saldoCajaNuevo=$saldoCajaViejo-$montoPagado+$montoImpuesto;
				//echo "<br>el saldo es ",$saldoCajaNuevo;
				$cuentaCaja->saldo=$saldoCajaNuevo;
				
				$cuentaCaja->cuentaContable->disminuye($saldoCajaNuevo,$docFP);
				//echo '<br>cuentacontabe caja ',$cuentaCaja->cuentaContable;
				$transaccion->commit();
				//echo "<br>la transaccion es: ",$transaccion;
				$cuentaCaja->commit();
				//echo "<br>la cuenta es: ",$cuentaCaja;
				//*****************ACTUALIZACION CUENTA CONTABLE CAJA****************//
				
				
				
				
			} else {
				//echo "<br>entra aqui en el else";
				$cuentaCaja=&$formaPago->formaPago->cuentaBancaria;
				$saldoCajaViejo=$cuentaCaja->saldo;
				
				$sql='FROM MTipoTransaccion as t where t.cuentaBancaria.oid = ?';
				$transacciones=$ezpdo_->find($sql,$cuentaCaja->epGetObjectId());
		//		echo "<br>aqui";
				$tipoTransaccion=$transacciones[0];
				$montoAumento=0;
				if($porcentaje=$tipoTransaccion->porcentajeComision>0){
					$montoNuevo=$montoPagado*$porcentaje/100;
					$montoImpuesto-=$montoNuevo;
					
					//transaccion por comision
					
					$transaccion=$session->create('MTransaccion');
					$fechaTransaccion=time();
					$montoTransaccion=$montoNuevo;
					$transaccion->esBanco=TRUE;
					$transaccion->fechaTransaccion=$fechaTransaccion;
					$transaccion->montoTransaccion=$montoTransaccion;
					$transaccion->debe=$montoTransaccion;
					$descripcion="Comision  ".$porcentaje ." %";
					$transaccion->descripcion=$descripcion;
					$transaccion->tipoTransaccion=$tipoTransaccion;
					$transaccion->cuentaCaja=$cuentaCaja;
					$transaccion->commit();
					//echo "<br>la transaccion es: ",$transaccion;
					$facade->session->evictAll('MTransaccion');
				}
				if($porcentaje=$tipoTransaccion->montoComision >0){
					
					$montoImpuesto-=$porcentaje;
					
					//transaccion por comision
					
					$transaccion=$session->create('MTransaccion');
					$fechaTransaccion=time();
					$montoTransaccion=$porcentaje;
					$transaccion->esBanco=TRUE;
					$transaccion->fechaTransaccion=$fechaTransaccion;
					$transaccion->montoTransaccion=$montoTransaccion;
					$transaccion->debe=$montoTransaccion;
					$descripcion="Comision  ".$porcentaje ." BsF";
					$transaccion->descripcion=$descripcion;
					$transaccion->tipoTransaccion=$tipoTransaccion;
					$transaccion->cuentaCaja=$cuentaCaja;
					//echo "<br>la transaccion es: ",$transaccion;
					$facade->session->evictAll('MTransaccion');
				}
				if($porcentaje=$tipoTransaccion->porcentajeImpuesto >0){
					$montoNuevo=$montoPagado*$porcentaje/100;
					$montoImpuesto-=$montoNuevo;
					
					//transaccion por impuesto
					
					$transaccion=$session->create('MTransaccion');
					$fechaTransaccion=time();
					$montoTransaccion=$montoNuevo;
					$transaccion->esBanco=TRUE;
					$transaccion->fechaTransaccion=$fechaTransaccion;
					$transaccion->montoTransaccion=$montoTransaccion;
					$transaccion->debe=$montoTransaccion;
					$descripcion="Impuesto ".$porcentaje ." %";
					$transaccion->descripcion=$descripcion;
					$transaccion->tipoTransaccion=$tipoTransaccion;
					$transaccion->cuentaCaja=$cuentaCaja;
					$transaccion->commit();
					//echo "<br>la transaccion es: ",$transaccion;
					$facade->session->evictAll('MTransaccion');
				}
				if($porcentaje=$tipoTransaccion->montoImpuesto >0){
					
					$montoImpuesto-=$porcentaje;
					
					$transaccion=$session->create('MTransaccion');
					$fechaTransaccion=time();
					$montoTransaccion=$porcentaje;
					$transaccion->esBanco=TRUE;
					$transaccion->fechaTransaccion=$fechaTransaccion;
					$transaccion->montoTransaccion=$montoTransaccion;
					$transaccion->debe=$montoTransaccion;
					$descripcion="Impuesto ".$porcentaje ." BsF";
					$transaccion->descripcion=$descripcion;
					$transaccion->tipoTransaccion=$tipoTransaccion;
					$transaccion->cuentaCaja=$cuentaCaja;
					$transaccion->commit();
					//echo "<br>la transaccion es: ",$transaccion;
					$facade->session->evictAll('MTransaccion');
				}
				
				//Crear la transaccion
				$transaccion=$session->create('MTransaccion');
				$fechaTransaccion=time();
				$montoTransaccion=$montoPagado+$montoImpuesto;
				$transaccion->esBanco=TRUE;
				$transaccion->fechaTransaccion=$fechaTransaccion;
				$transaccion->montoTransaccion=$montoTransaccion;
				$transaccion->debe=$montoTransaccion;
				if(strlen($formaPago->detalle)>0){
					$detalle="";
				} else {
					$detalle=" con ".$formaPago->formaPago->nombre." ".$formaPago->detalle;
				}
				$descripcion="Pago Factura ".$docFP->numeroFactura .$detalle;
				$transaccion->descripcion=$descripcion;
				$transaccion->tipoTransaccion=$tipoTransaccion;
				$transaccion->cuentaBanco=$cuentaCaja;
				$transaccion->documento=$docFP;
				
				
				
				
				
				$saldoCajaNuevo=$saldoCajaViejo-$montoPagado+$montoImpuesto;
				//echo "el saldo es ",$saldoCajaNuevo;
				$cuentaCaja->saldo=$saldoCajaNuevo;
				
				$cuentaCaja->cuentaContable->disminuye($saldoCajaNuevo,$docFP);
				//echo '<br>cuentacontabe banco ',$cuentaCaja->cuentaContable;
				//echo "<br>la cuenta es: ",$cuentaCaja;
				$transaccion->commit();
				//echo "<br>la transaccion es: ",$transaccion;
				$cuentaCaja->commit();
				//echo "<br>la cuenta es: ",$cuentaCaja;
				
				
			}
		
			
		}
		
		
		
		
		//echo "<br> el total pagado es: ",$totalPagado;
		$docFP->totalPagado=$totalPagado;
		
		$totalAPagar=stringToNumber($docFP->totalAPagar);
		$docFP->totalAPagar=$totalAPagar;
		
		$docFP->totalAntesIva=stringToNumber($docFP->totalAntesIva);
		$docFP->totalIva=stringToNumber($docFP->totalIva);
		$docFP->totalDescuento=stringToNumber($docFP->totalDescuento);
		$docFP->fechaTransaccion=stringToTime($docFP->fechaTransaccion);
		$restantePorPagar=$totalAPagar-$totalPagado;
		//echo "<br> cuenta cliente antes es: ",$cliente->cuenta;
		
		
		/*
		 * Colocación de información en la cuenta contable
		 * Información en el renglón
		 */
		 
		 $montoDeuda=$restantePorPagar;
		 
		 /**TODO: Verificar com ose va a buscar la cuenta contable
		  * 
		  */
//		 $cuentaContableVenta=$session->get('MCuentaContable',2);
//		 
//		 $renglon=$session->create('MRenglonCuenta');
//		 $fechaMovimiento=time();
//		 $haber=$montoDeuda;
//		 $renglon->fechaMovimiento=$fechaMovimiento;
//		 $renglon->haber=$haber;
		 
		 /**TODO:
		  * Actualizar libro de Venta
		  */
		  //$libro=$session->create('MLibroVenta');
		  $montoSinIva=stringToNumber($docFP->totalAntesIva);
		  $montoIva=stringToNumber($docFP->totalIva);
		  
		 
		
		$saldoProveedorNuevo=$saldoProveedor+$restantePorPagar;
		
		$proveedor->cuenta->saldo=$saldoProveedorNuevo;
		
		//estos es para llevar el historico del saldo de la cta proveedor.... carlos
		$listaHistoricoCuentas = $session->create('MListaHistoricoCuentas');
		$listaHistoricoCuentas->fecha = date('U');
		$listaHistoricoCuentas->saldo = $saldoProveedorNuevo;
		$docFP->commit();
		$docFP->numero = $docFP->getDocumentNumber();
						
		$listaHistoricoCuentas->referencia = $docFP->numero;
		$listaHistoricoCuentas->commit();
		////////////////////////////////////////////
		
		$cuentaProveedor->historico[] = $listaHistoricoCuentas;		
		
		$condicionPago=$docFP->condicionPago;
		//echo "<br>la cuenta de pago es: ",$proveedor->cuenta;
		
		$cuentaProveedor->commit();
		$montoCuentaPorCobrar=0;
		
		$montoTotal=$restantePorPagar;
		$porcentajeRestante=0;
	
		if($restantePorPagar>0){
			if(count($cuentaHja[0])>0){
				$cuentaHja[0]->aumenta($restantePorPagar,$docFP);
				$cuentaHja[0]->commit();
			}
			//echo "<br>aqui la condicion ",$condicionPago;
						$cuentas=$configuracion[0]->cuenta;
			foreach($cuentas as $c){
				if($c->posicion==1){
					$restantePorPagar;
					$c->cuentaContable->aumenta($restantePorPagar,$docFP);
					$c->cuentaContable->commit();
				}
			}
			$numero=0;
			
//			foreach($condicionPago->plazo as $plazo){
//				//echo "<br>entra en cada condicion la primera vez";
//				if($plazo->diasPlazo == 0){
//					$porcentaje=$plazo->porcentaje;
//					$porcentajeRestante=100-$porcentaje;
//					$montoPorCobrar=$restantePorPagar;
//					$montoTotal=100*$restantePorPagar/$porcentajeRestante;
//					
//					$fecha=time();
//					// recibo de pago
//					$docRF=$session->create('DReciboFactura');
//					$newEfacade =& EFacade :: initWorkflow($facade->session, $docRF, & $role);
//					$docRF->montoPago=$docFP->totalPagado;
//					$concepto="Pago Factura ".$docFP->getNumeroFactura();
//					$docRF->concepto=$concepto;
//					$docRF->fecha=$fecha;
//					//echo "<br>Inicia el wf de orden de actividad";
//					//echo "la orden de actividad tiene asociada :",$docRoot->ordenOriginal;
//					$transSetOT = & EFacade :: getCurrentTransSetAuto($newEfacade->getWorkflow(), /* MTrans :: $TYPE_AUTO_PROCESS */ 3);
//					//echo "newefacde de OA es: ",$newEfacade;
//					//echo "<br>el transsetOT es: ",$transSetOT;
//					$transOT = $transSetOT->getTransByName('t1');
//					//echo "<br>transOA",$transOT;
//					$usuario=NULL;
//					$newEfacade->fireTrans($transOT, $usuario, "Crear",TRUE);
////						echo "<br><br>EL DOCROOT ES: ",$docRoot;
//					$docRF->epSetDirty(TRUE);// marcar el documento para que sea salvado los cambios en su lista de items
//					$newEfacade->saveWorkflow();
//					$docRF->diferenciador=$docRF->getDocumentDifer();
//					$docRF->commit();
//					$docRF->numero = $docRF->getDocumentNumber();
//					$docRF->diferenciador=$docRF->getDocumentDifer();
//					$docRF->commit();
//					//echo "<br>acabo de crerar el recibo ",$docRF;
//					unset($newEfacade);
//					$facade->session->evictAll('MEdge');
//					$facade->session->evictAll('MTrans');
//					$facade->session->evictAll('MPlace');
//					break;
//				}
//			}
			//echo "<br>veo cuales son los plazos";
			$plazos= $condicionPago->plazo;
			$numCuota=0;
			foreach($plazos as $plazo){
				$numCuota=$numCuota+1;
				//echo "<br>en el lazo de los plazos";
				if($plazo->diasPlazo != 0){
					//echo "<br> entra en el plazo";
					$porcentaje=$plazo->porcentaje;
					$montoCuota=$montoTotal*$porcentaje/100;
					$diasPlazo=$plazo->diasPlazo;
					$segundosPlazo=$diasPlazo*86400;
					$fechaActual=time();
					$fechaVencimiento=$fechaActual+$segundosPlazo;
					
//					 if($docFP->tieneGiro){
//					 	
//					 	$numero++;
//					 	$fechaVencimiento=$fechaActual+$segundosPlazo;
//					 	//Creación del giro y asociación con el documento factura
//					 	$docGC=$session->create('DGiroCliente');
//					 	$docGC->factura=$docFP;
//					 	$docGC->numeroGiro=$numero;
//					 	$docGC->cuentaCliente=$cuentaProveedor;
//					 	$docGC->fechaTransaccion=$fechaActual;
//					 	$docGC->fechaVencimiento=$fechaVencimiento;
//					 	$docGC->montoGiro=$montoCuota;
//				    		
//						
//						//echo "<br>creo el giro";
//						/** para crear el workflow por primera vez **/
//						$role=NULL;
//						$newEfacade =& EFacade :: initWorkflow($facade->session, $docGC, & $role);
//						//echo "<br>Inicia el wf de orden de actividad";
//						//echo "la orden de actividad tiene asociada :",$docRoot->ordenOriginal;
//						$transSetOT = & EFacade :: getCurrentTransSetAuto($newEfacade->getWorkflow(), /* MTrans :: $TYPE_AUTO_PROCESS */ 3);
//						//echo "newefacde de OA es: ",$newEfacade;
//						//echo "<br>el transsetOT es: ",$transSetOT;
//						$transOT = $transSetOT->getTransByName('t1');
//						//echo "<br>transOA",$transOT;
//						$usuario=NULL;
//						$newEfacade->fireTrans($transOT, $usuario, "Crear",TRUE);
////						echo "<br><br>EL DOCROOT ES: ",$docRoot;
//						$docGC->epSetDirty(TRUE);// marcar el documento para que sea salvado los cambios en su lista de items
//						$newEfacade->saveWorkflow();
//						$docGC->diferenciador=$docGC->getDocumentDifer();
//						$docGC->commit();
//						$docGC->numero = $docGC->getDocumentNumber();
//						$docGC->diferenciador=$docGC->getDocumentDifer();
//						$docGC->commit();
//						//echo "<br>acabo de crerar el giro ",$docGC;
//						unset($newEfacade);
//						$facade->session->evictAll('MEdge');
//						$facade->session->evictAll('MTrans');
//						$facade->session->evictAll('MPlace');
//						
//					 } else {
					 	$cuota=$session->create('MCuotaProveedor');
						$cuota->fechaVencimiento=$fechaVencimiento;
						$cuota->montoCuota=$montoCuota;
						$cuota->status=FALSE;
						$cuota->proveedor=$proveedor;
						$cuota->refFactura='Factura Num: '.$docFP->numeroFactura.' Cuota Num: '.$numCuota.' Vence el '.$cuota->getFechaVencimientoToString();
						$cuota->factura=$docFP;
						$listaCuotas[]=$cuota;
						//echo "<br>cuota es: ",$cuota;
						
						//se crea la clase ke lleva el historico del saldo y documento que afecto la cta proveedor... carlos
						
						$historico = $session->create('MListaHistoricoCuentas');
						$historico->fecha = date('U');
						$cuentaProveedor->saldo = $cuentaProveedor->saldo - $montoCuota;
						$historico->saldo = $cuentaProveedor->saldo;						
						$historico->referencia = $cuota->refFactura;
						$historico->commit();
						
						$cuota->cuentaProveedor = $cuentaProveedor;
						$cuentaProveedor->historico[] = $historico;								
					 	$cuentaProveedor->commit();			 	
						$cuota->commit();
//					 }
					 
				}
			}
				
		}
		
		////se descuenta la cantidad d las nots d credito asociadas..... carlos
		if($docFP->listaNotaCreditoProveedorList){
			foreach($docFP->listaNotaCreditoProveedorList as & $lista){
				$nota = & $lista->notaCreditoProveedor;
				$nota->importeTotal = $nota->importeTotal - $lista->monto;
				$nota->epSetDirty(TRUE);
				
				$nota->commit();
			}
		}
			

		$workflowFP = & $docFP->getWorkflowRef();
		$facade->session->refresh($workflowFP);
		$transSetFP = & EFacade :: getCurrentTransSetAuto($workflowFP, /* MTrans :: $TYPE_AUTO_AGENT */	2);
		
		if(count($plazos) >1){
			$transFP = & $transSetFP->getTransByName('t3');
		}
		else {
			$transFP = & $transSetFP->getTransByName('t2');
		}
		
		$user=NULL;
		$facade->fireTrans($transFP, $user, 'Generacion de Factura', FALSE);

		$workflowFP->epSetDirty(TRUE); // marcar el workflow para que sea salvado los cambios en sus worktrans
		$docFP->epSetDirty(TRUE); // marcar el documento para que sea salvado los cambios en su lista de items
		$facade->saveWorkflow();	
			//echo "<br>termina el agnet";
			
	}
	
	public function totalPagos(EFacade & $facade) {
		
		
		 
		 $docFP = & $facade->getDocumentRoot();
		 
		 
		 
		 //verificar si los pagos se han realizado o no
		/**TODO: Verificar los pagos realziados a giros y/o cuotas
		 * 
		 */
		 $cont = 0;
		 foreach($docFP->cuotas as $cuota){
		 	
		 	if($cuota->status == true){
		 		$cont++;
		 	}
		 }
		 
		 
		 if(count($docFP->cuotas) == $cont){
		 	$todoPago=TRUE;
		 	//echo '<hr> claro si';
		 }
		 
		 //$todoPago=TRUE;
		 
		 
		 
		$workflowFP = & $docFP->getWorkflowRef();
		$facade->session->refresh($workflowFP);
		$transSetFP = & EFacade :: getCurrentTransSetAuto($workflowFP, /* MTrans :: $TYPE_AUTO_AGENT */	2);
		
		if($todoPago){
			$transFP = & $transSetFP->getTransByName('t6');
		}
		else {
			$transFP = & $transSetFP->getTransByName('t5');
		}
		
		$user=NULL;
		$facade->fireTrans($transFP, $user, 'Verificación de pago completo', FALSE);

		$workflowFP->epSetDirty(TRUE); // marcar el workflow para que sea salvado los cambios en sus worktrans
		$docFP->epSetDirty(TRUE); // marcar el documento para que sea salvado los cambios en su lista de items
		$facade->saveWorkflow();	
		 	

		 
		 
		
	}
}
?>